import random

class Dado:
	def __init__(self, valor):
		self.__valor = valor
	
	def getValor (self):
		return self.__valor

class GrupoDados:
	def __init__(self):
		self.__listaDados = []
		
	def agregarDados (self):
		valor = random.randrange(1,7)
		self.__listaDados.append(Dado(valor))	
	def eliminarDado (self, valor):
		self.listaDados.remove(valor)
	def verDados (self):
		return self.__listaDados

class Jugador:
	def __init__(self, nombre):
		self.__nombre = nombre
		self.dadosObtenidos = []
		self.__puntosTotales = None

	def getNombre(self):
		return self.__nombre
	def setDados(self,lista):
		self.dadosObtenidos.append(lista)
	def setPuntosTotales(self,valor):
		self.__puntosTotales = valor	
	def getdadosobtenidos (self):
		return self.dadosObtenidos	
		
class GrupoJugadores:
	def __init__(self):
		self.__jugadores = []
	
	def agregarJugador (self,nombre):
		self.__jugadores.append(nombre)
	def getJugadores (self):
		return self.__jugadores

class Puntaje:
	def __init__(self, nombre):
		self.__nombre = nombre
		self.__puntajeTotal = 0
		self.__numero1 = False
		self.__numero2 = False
		self.__numero3 = False
		self.__numero4 = False
		self.__numero5 = False
		self.__numero6 = False
	
	def getNombre(self):
		return self.__nombre
	def setPuntajeTotal (self,valor):		
		self.__puntajeTotal = self.__puntajeTotal + valor
	def getPuntajeTotal (self):
		return self.__puntajeTotal	
	def setNumero1 (self,valor):
		self.__numero1 = valor	
	def getNumero1 (self):
		return self.__numero1	
	def setNumero2 (self,valor):
		self.__numero2 = valor
	def getNumero2 (self):
		return self.__numero2	
	def setNumero3 (self,valor):
		self.__numero3 = valor
	def getNumero3 (self):
		return self.__numero3		
	def setNumero4 (self,valor):
		self.__numero4 = valor
	def getNumero4 (self):
		return self.__numero4									
	def setNumero5 (self,valor):
		self.__numero5 = valor	
	def getNumero5 (self):
		return self.__numero5		
	def setNumero6 (self,valor):
		self.__numero6 = valor	
	def getNumero6 (self):
		return self.__numero6
		



class Main:
	def menu (self):
		grupo = GrupoJugadores()
		opc = input ('ingrese 1 para nuevo usuario, 2 para consutar  ')
		if opc == 1: 
			self.crearUsuario(grupo)
		if opc == 2:
			self.consultar (grupo)
	def crearUsuario(self, grupo):
		
		nombreUsuario = raw_input ('inserte nombre de usuario numero 1: ')
		#grupo.agregarJugador(nombreUsuario)
		listaTmp = []
		jugador = Jugador(nombreUsuario)
		self.tirarDados(listaTmp, 5, jugador, grupo)
		
	def tirarDados (self, listaTmp, cantidad, jugador, grupo):
		dadonuevo = GrupoDados()
		nombreJugador = jugador.getNombre()
		for i in range (0,cantidad):
			dadonuevo.agregarDados()
		for n in dadonuevo.verDados():
			listaTmp.append(n.getValor())
		
		print listaTmp
		
		self.consultaNumeros(jugador, listaTmp, grupo)
	
	def consultaNumeros (self,jugador, listaTmp, grupo):
		consulta = input('ingrese el numero que desea renovar o -0- para terminar ')
		if consulta == 0:
			self.chequearJuego(listaTmp, jugador, grupo)
			
		else:
			self.borrarNumero(listaTmp, consulta, jugador, grupo)
	
	
	def borrarNumero  (self, listaTmp, num, jugador, grupo):
		for i in listaTmp:
			if num == i:
				listaTmp.remove (num)
				self.borrarNumero(listaTmp, num, jugador, grupo)
				#print listaTmp
		
		if len (listaTmp) != 5:
			tmp1 = len(listaTmp)
			cantidad = 5 - tmp1
			self.tirarDados(listaTmp, cantidad, jugador, grupo)#  (self, listaTmp, cantidad, jugador, grupo):
		

	def chequearJuego (self, listaTmp, jugador, grupo):
		sumaTmp = 0
		print listaTmp
		consulta = raw_input('estos son los dados finales que desea [si/no]: ')
		if consulta == 'no':
			self.consultaNumeros(jugador, listaTmp, grupo)
		else:
			consulta2 = input('elija que numero desea sumar: ')
			for i in listaTmp: 
				if consulta2 == i:
					sumaTmp = sumaTmp +i
		#print sumaTmp
		jugador.setDados(listaTmp)
		grupo.agregarJugador(jugador)
		self.agregarPuntaje(listaTmp, jugador, grupo, sumaTmp, consulta2)
		
	def agregarPuntaje (self, listaTmp, jugador, grupo, sumaTmp, num):
		nombre = jugador.getNombre()
		puntaje = Puntaje(nombre)
		if num == 1:
			if puntaje.getNumero1() == False:
				puntaje.setNumero1(True)
				puntaje.setPuntajeTotal(sumaTmp)
		elif num == 2:
			if puntaje.getNumero2() == False:
				puntaje.setNumero2(True)
				puntaje.setPuntajeTotal(sumaTmp)
		elif num == 3:
			if puntaje.getNumero3() == False:
				puntaje.setNumero3(True)
				puntaje.setPuntajeTotal(sumaTmp)
		elif num == 4:
			if puntaje.getNumero4() == False:
				puntaje.setNumero4(True)
				puntaje.setPuntajeTotal(sumaTmp)	
		elif num == 5:
			if puntaje.getNumero5() == False:
				puntaje.setNumero5(True)
				puntaje.setPuntajeTotal(sumaTmp)
		elif num == 6:
			if puntaje.getNumero6() == False:
				puntaje.setNumero6(True)
				puntaje.setPuntajeTotal(sumaTmp)
		print puntaje.getPuntajeTotal()
		self.consultar(grupo)
	
		
	def consultar (self, grupo):
		usuario = raw_input ('consultar puntaje final de acuerdo al usuario: ')
		for i in grupo.getJugadores():
			
			if i.getNombre() == usuario:
				print i.getNombre()
				print i.dadosObtenidos
		#puntaje = Puntaje(usuario)
		#print puntaje.getPuntajeTotal()				
		self.menu()
		
main = Main()
main.menu()
